package com.sunyw.xyz.utils;

import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Sheet;
import org.springframework.util.StringUtils;

import java.text.DecimalFormat;
import java.util.regex.Pattern;

public class ExcelUtils {
    /**
     * 取值
     *
     * @param row
     * @param cell
     * @param sheet
     * @return
     */
    public String getCellValue(int row, int cell, Sheet sheet) {
        String value;
        CellType cellType = sheet.getRow(row).getCell(cell).getCellType();
        switch (cellType) {
            case STRING:
                value = sheet.getRow(row).getCell(cell).getStringCellValue();
                break;
            case NUMERIC:
                value = String.valueOf(sheet.getRow(row).getCell(cell).getNumericCellValue());
                break;
            case FORMULA:
                value = formatString(String.valueOf(sheet.getRow(row).getCell(cell).getNumericCellValue()));
                break;
            case BOOLEAN:
                value = String.valueOf(sheet.getRow(row).getCell(cell).getBooleanCellValue());
                break;
            default:
                value = "";
        }
        return value;
    }

    /**
     * 去除"."
     *
     * @param value
     * @return
     */
    public String formatString(String value) {
        if (!StringUtils.isEmpty(value)) {
            value = value.substring(0, value.indexOf("."));
        }
        return value;
    }

    /**
     * 科学计数法转换为数字
     *
     * @param value
     * @return
     */
    public String format(String value) {
        Pattern pattern = Pattern.compile("(-?\\d+\\.?\\d*)[Ee]{1}[\\+-]?[0-9]*");
        DecimalFormat ds = new DecimalFormat("0");
        if (!pattern.matcher(value).matches()) {
            return value;
        }
        value = ds.format(Double.parseDouble(value)).trim();
        return value;
    }
}
